让我们列出一些在实现泛型库时需要记住的事情(注意，其中一些可能会在后面会介绍到):

\begin{itemize}
\item 
模板中使用转发引用来转发值(参见第91页6.1节)。如果值不依赖于模板参数，使用auto\&\&(参见11.3节)。

\item 
当参数声明为转发引用时，模板参数在传递左值时要有引用类型(参见15.6.2节)。

\item 
当需要依赖于模板形参的对象地址时，使用std::addressof()，以避免当对象绑定到带有重载操作符\&的类型时出现意外(11.2.2节)

\item 
对于成员函数模板，确保不会比预定义的复制/移动构造函数或赋值操作符更好地匹配(6.4节)。

\item 
模板参数可能是字符串字面值，且不通过值传递时(7.4节和D.4节)，请考虑使用std::decay。

\item 
如果模板参数有out或inout，请准备好处理参数可能指定为const类型的情况(参见7.2.2节)。

\item 
准备好处理模板参数引用的副作用(参见11.4节了解详细信息，19.6.1节为示例)。特别是，要确保返回类型不能是引用(参见7.5节)。

\item 
准备好处理不完全类型，从而进行以支持，例如：递归数据结构(参见11.5节)。

\item 
重载所有数组类型，而不仅仅是T[SZ](参见5.4节)。
\end{itemize}